package gervosou;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.BorderLayout;

import javax.swing.ButtonGroup;
import javax.swing.JTextField;
import javax.swing.JLabel;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JSeparator;
import javax.swing.SwingConstants;
import javax.swing.JRadioButton;

public class VueDepotArgent extends Vue {
	ComptePerso comptePerso;
	CompteSociete compteSoc;
	
	private JPanel panel;
	
	private JTextField textFieldNum_compte;
	private JTextField textFieldSolde;
	private JTextField textFieldDepot;
	private JTextField textFieldProprio;
	
	private JButton btnRechercher;
	private JButton btnAnnulerEnrg;
	private JButton btnEnregistrer;
	private JButton btnAnnuler;
	private JButton btnRechercherMend;
	private JButton btnAnnulerMend;
	
	private final ButtonGroup buttonGroup = new ButtonGroup();
	
	final JRadioButton rdbtnPerso;
	final JRadioButton rdbtnSocit;
	
	private JTextField textFieldNomMend;
	private JTextField textFieldPrenomMend;
	
	private JLabel lblSolde;
	private JLabel lblDepot;
	private JLabel lblNumCompte;
	private JLabel lblTypeCompte;
	private JLabel lblPropritaire;
	private JLabel lblPrnomMendataire;
	private JLabel lblNomMendataire;
	
	private JSeparator separator;
	private JSeparator separator_1;
	
	public VueDepotArgent(Controleur c) {
		super(c);
		setTitle("Depot d'argent");
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setBounds(100, 100, 418, 450);
		panel = new JPanel();
		getContentPane().add(panel, BorderLayout.CENTER);
		panel.setLayout(null);
		
		lblNumCompte = new JLabel("Numéro de compte :");
		lblNumCompte.setBounds(37, 34, 130, 27);
		panel.add(lblNumCompte);
		
		textFieldNum_compte = new JTextField();
		textFieldNum_compte.setBounds(239, 38, 114, 19);
		panel.add(textFieldNum_compte);
		textFieldNum_compte.setColumns(10);
		
		lblSolde = new JLabel("Solde :");
		lblSolde.setBounds(37, 317, 61, 15);
		panel.add(lblSolde);
		
		lblDepot = new JLabel("Montant du dépot :");
		lblDepot.setBounds(37, 344, 130, 15);
		panel.add(lblDepot);
		
		textFieldSolde = new JTextField();
		textFieldSolde.setEnabled(false);
		textFieldSolde.setEditable(false);
		textFieldSolde.setBounds(239, 315, 114, 19);
		panel.add(textFieldSolde);
		textFieldSolde.setColumns(10);
		
		textFieldDepot = new JTextField();
		textFieldDepot.setBounds(239, 342, 114, 19);
		panel.add(textFieldDepot);
		textFieldDepot.setColumns(10);
		
		btnEnregistrer = new JButton("Enregistrer");
		btnEnregistrer.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			String d = textFieldDepot.getText();
			if (compteSoc != null) {
			    getControleur().depotSoc(d, compteSoc);
			}else {
				getControleur().depotPers(d, comptePerso);
			}
		}
		});
		btnEnregistrer.setBounds(79, 386, 107, 25);
		panel.add(btnEnregistrer);
		
		btnAnnulerEnrg = new JButton("Annuler");
		btnAnnulerEnrg.setBounds(239, 386, 107, 25);
		btnAnnulerEnrg.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if(rdbtnPerso.isSelected())	setEtat(initiale);
				else setEtat(inter1);
			}
		});
		panel.add(btnAnnulerEnrg);
		
		
		
		btnAnnuler = new JButton("Annuler");
		btnAnnuler.setBounds(239, 116, 107, 25);
		btnAnnuler.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getControleur().fermerVue(VueDepotArgent.this);
			}			
		});		
		panel.add(btnAnnuler);
		
		lblTypeCompte = new JLabel("Type compte :");
		lblTypeCompte.setBounds(79, 66, 92, 15);
		panel.add(lblTypeCompte);
		
		rdbtnSocit = new JRadioButton("Société");
		rdbtnSocit.setBounds(239, 86, 134, 23);
		buttonGroup.add(rdbtnSocit);
		panel.add(rdbtnSocit);
		
		rdbtnPerso = new JRadioButton("Perso");
		rdbtnPerso.setBounds(239, 62, 134, 23);
		buttonGroup.add(rdbtnPerso);
		panel.add(rdbtnPerso);
		
		textFieldProprio = new JTextField();
		textFieldProprio.setEnabled(false);
		textFieldProprio.setEditable(false);
		textFieldProprio.setBounds(239, 284, 114, 19);
		panel.add(textFieldProprio);
		textFieldProprio.setColumns(10);
		
		lblPropritaire = new JLabel("Propriétaire :");
		lblPropritaire.setBounds(37, 286, 92, 15);
		panel.add(lblPropritaire);
		
		btnRechercher = new JButton("Rechercher");
		btnRechercher.setBounds(79, 118, 107, 25);
		btnRechercher.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				String num = textFieldNum_compte.getText();
				if (rdbtnPerso.isSelected()) {
					getControleur().rechComptePersoDepot(num);
				}else if(rdbtnSocit.isSelected()) {
					getControleur().rechCompteSocieteDepot(num);
				}
				else{
					Message dialog = new Message("Selectionnez un type de compte");
					dialog.setVisible(true);
				}
			}
		});
		panel.add(btnRechercher);
		
		separator = new JSeparator();
		separator.setBounds(37, 155, 316, 2);
		panel.add(separator);
		
		separator_1 = new JSeparator();
		separator_1.setBounds(37, 270, 316, 2);
		panel.add(separator_1);
		
		textFieldNomMend = new JTextField();
		textFieldNomMend.setBounds(239, 169, 114, 19);
		panel.add(textFieldNomMend);
		textFieldNomMend.setColumns(10);
		
		textFieldPrenomMend = new JTextField();
		textFieldPrenomMend.setBounds(239, 204, 114, 19);
		panel.add(textFieldPrenomMend);
		textFieldPrenomMend.setColumns(10);
		
		lblPrnomMendataire = new JLabel("Prénom Mandataire :");
		lblPrnomMendataire.setBounds(37, 206, 130, 15);
		panel.add(lblPrnomMendataire);
		
		
		lblNomMendataire = new JLabel("Nom Mandataire :");
		lblNomMendataire.setBounds(53, 171, 114, 15);
		panel.add(lblNomMendataire);
		
		btnRechercherMend = new JButton("Rechercher");
		btnRechercherMend.setBounds(79, 233, 107, 25);
		btnRechercherMend.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				String nom = textFieldNomMend.getText();
				String prenom = textFieldPrenomMend.getText();
				getControleur().rechMendataireDepot(nom,prenom,compteSoc);
				}	
			});
		panel.add(btnRechercherMend);
		
		btnAnnulerMend = new JButton("Annuler");
		btnAnnulerMend.setBounds(239, 233, 107, 25);
		btnAnnulerMend.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				setEtat(initiale);}	
			});		
		panel.add(btnAnnulerMend);
	}
		
		

	public void alimente(ComptePerso cp) {
		textFieldProprio.setText(cp.getClientPhysique().getNom());
		textFieldSolde.setText(String.valueOf(cp.getSolde()));
		comptePerso = cp;
	}
	
	public void alimente(CompteSociete cs){
		textFieldProprio.setText(cs.getSociete().getNom());
		textFieldSolde.setText(String.valueOf(cs.getSolde()));
		compteSoc = cs;
	}
	
	public void setEtat (int etat){
		switch (etat) {
		case initiale: {
			textFieldNum_compte.setEditable(true);
			textFieldNum_compte.setEnabled(true);
			rdbtnPerso.setEnabled(true);
			rdbtnSocit.setEnabled(true);
			btnRechercher.setEnabled(true);
			btnAnnuler.setEnabled(true);
			lblNumCompte.setEnabled(true);
			lblTypeCompte.setEnabled(true);
			
			textFieldDepot.setEditable(false);
			textFieldDepot.setEnabled(false);
			textFieldPrenomMend.setEditable(false);
			textFieldPrenomMend.setEnabled(false);
			textFieldNomMend.setEditable(false);
			textFieldNomMend.setEnabled(false);
			
			
			btnEnregistrer.setEnabled(false);
			btnAnnulerEnrg.setEnabled(false);	
			btnAnnulerMend.setEnabled(false);
			btnRechercherMend.setEnabled(false);
			
			lblNomMendataire.setEnabled(false);
			lblPrnomMendataire.setEnabled(false);
			lblPropritaire.setEnabled(false);
			lblSolde.setEnabled(false);
			lblDepot.setEnabled(false);			
			break;
			}
		case inter1: {
			textFieldPrenomMend.setEditable(true);
			textFieldPrenomMend.setEnabled(true);
			textFieldNomMend.setEditable(true);
			textFieldNomMend.setEnabled(true);
			textFieldDepot.setEditable(false);
			textFieldDepot.setEnabled(false);
			
			rdbtnPerso.setEnabled(false);
			rdbtnSocit.setEnabled(false);
			
			btnRechercher.setEnabled(false);
			btnAnnuler.setEnabled(false);
			btnEnregistrer.setEnabled(false);
			btnAnnulerEnrg.setEnabled(false);	
			btnAnnulerMend.setEnabled(true);
			btnRechercherMend.setEnabled(true);
			
			
			lblNomMendataire.setEnabled(true);
			lblPrnomMendataire.setEnabled(true);
			lblNumCompte.setEnabled(false);
			lblTypeCompte.setEnabled(false);
			lblPropritaire.setEnabled(false);
			lblSolde.setEnabled(false);
			lblDepot.setEnabled(false);	
			break;
		}
		case finale: {
			textFieldNum_compte.setEditable(false);
			textFieldNum_compte.setEnabled(false);
			textFieldPrenomMend.setEditable(false);
			textFieldPrenomMend.setEnabled(false);
			textFieldNomMend.setEditable(false);
			textFieldNomMend.setEnabled(false);
			
			
			rdbtnPerso.setEnabled(false);
			rdbtnSocit.setEnabled(false);
			
			
			btnRechercher.setEnabled(false);
			btnAnnuler.setEnabled(false);
			btnAnnulerMend.setEnabled(false);
			btnRechercherMend.setEnabled(false);
			btnEnregistrer.setEnabled(true);
			btnAnnulerEnrg.setEnabled(true);
			
			textFieldDepot.setEditable(true);
			textFieldDepot.setEnabled(true);
			lblNomMendataire.setEnabled(false);
			lblPrnomMendataire.setEnabled(false);
			lblPropritaire.setEnabled(false);
			lblSolde.setEnabled(false);
			lblDepot.setEnabled(false);
			lblNumCompte.setEnabled(false);
			lblTypeCompte.setEnabled(false);
						break;
			}
		}
	}
}